#!/usr/bin/python
# -*-coding:UTF-8 -*-

# ========================
# @Time  : 2021/1/28
# @Author: Sunny
# ========================

#---------------------------------------递归函数------------------------------
"""
递归函数：就是在函数内部调用自身函数
注意点：一定要设置递归的临界点<终止递归的条件>，否则会产生大递归报错或者说死循环
一般不轻易用递归函数，python里面使用递归性能特别差
"""

#例如：（但是是错误示范，因为是一个无线递归）
# import sys
# def func(x):
#     print(x)
#     func(x-1)
#
#
# #查询最大递归限度
# res = sys.getrecursionlimit()
# print(res)
#
# #设置最大递归限制
# sys.setrecursionlimit(10)
# func(2)


#---------------设置递归的终止条件------------------
# def func1(x):
#     if x == 0:
#         return '执行结束'
#     print(x)
#     func1(x -1)
#
# print(func1(10))



#------------案例：计算任意数的阶乘-------------------
#6的阶乘 1*2*3*4*5*6
# def mu(n):
#     if n==1:
#         return 1
#     elif n==2:
#         return 1*2
#     elif n==3:
#         return 1*2*3
#     elif n==4:
#         return 1*2*3*4
#     elif n==5:
#         return 1*2*3*4*5
#     elif n==6:
#         return 1*2*3*4*5*6

#用while循环
# i=1
# sum =1
# while i<=7:
#     sum = sum*i
#     i+=1
# print(sum)

# 递归函数
# def mut(n):
#     if n == 1:
#         return 1
#     else:
#         return mut(n-1)*n
# print(mut(7))

#-----------------案例二：通过递归来实现斐波拉契数列------------------------------
#第一个数是1，后面的每一个数，等于它前两个数相加之和
# li = [1,1,2,3,5,8,13,21,34,55,89]

def fixbo1(n):
    a = 0
    b = 1
    for i in range(1,n+1):
        if i == 1:
            print(1)
        else:
            th = a+b
            print(th)
            a = b
            b = th

c = fixbo1(6)


# def fixbo(n):
#
#     if n<1:
#         return 0
#     elif n ==1 or n ==2:
#         return 1
#     else:
#         return fixbo(n-1)+fixbo(n-2)
#

